# 题目
# 在5个具有5个不同颜色的房间；每个房间里分别住着一个不同国籍的人；每个人都喝一种特定品牌的饮料；抽一种特定品牌的烟；养一特定的宠物；
# 没有任意两个人抽相同品牌的香烟、或喝相同品牌的饮料，或养相同的宠物。
# 同时又知：
# 1.英国人住在红色的房子里；                   包含人和房子  x
# 2.瑞典人养狗作为宠物；                      包含人和宠物 x
# 3.丹麦人喝茶；                              包含人和饮料  x
# 4.绿房子紧挨着白房子，在白房子的左边；         包含房子   x
# 5.绿房子的主人喝咖啡；                       包含房子和饮料  x
# 6.抽PALLMALL牌香烟的人养鸟；                 包含烟和宠物 x
# 7.黄色房子里的人抽DUNHILL牌香烟；             包含房子和烟  x
# 8.住在中间那个房子里的人喝牛奶；               包含饮料   x
# 9.挪威人住在第一个房子里面；                  包含人    x
# 10.抽BLENDS牌香烟的人和养猫的人相邻；          包含烟和宠物 x
# 11.养马的人和抽DUNHILL牌香烟的人相邻；         包含烟和宠物 x
# 12.抽BLUEMASTER牌香烟的人喝啤酒；              包含烟和饮料 x
# 13.德国人抽PRINCE牌香烟；                      包含人和烟  x
# 14.挪威人和住在蓝房子的人相邻；                 包含人和房子  x
# 15.抽BLENDS牌香烟的人和喝矿泉水的人相邻。        包含烟和饮料  x
# 问谁在养鱼？

import itertools
import sys  
# 由15个条件可知有以下人、饮料、烟、宠物、房子
people=['英国人','瑞典人','丹麦人','挪威人','德国人']
house=['红色房子','绿色房子','白色房子','黄色房子','蓝色房子']
drink=['茶','咖啡','牛奶','啤酒','矿泉水']
smoke=['PALLMALL','DUNHILL','BLENDS','BLUEMASTER','PRINCE']
pet=['狗','鸟','猫','马','鱼']

people_list=list(itertools.permutations(people))
# 9.挪威人住在第一个房子里面；
for x in people_list[:]:
    if x.index('挪威人')!=0:
        people_list.remove(x)

house_list=list(itertools.permutations(house))
# 4.绿房子紧挨着白房子，在白房子的左边；
for x in house_list[:]:
    if x.index('绿色房子')-x.index('白色房子')!=-1:
        house_list.remove(x)

drink_list=list(itertools.permutations(drink))
# 8.住在中间那个房子里的人喝牛奶； 
for x in drink_list[:]:
    if x.index('牛奶')!=2:
        drink_list.remove(x)

smoke_list=list(itertools.permutations(smoke))
pet_list=list(itertools.permutations(pet))

for p in people_list:
    for h in house_list:
    # 1.英国人住在红色的房子里； 
        if p.index('英国人')!=h.index('红色房子'):
            continue
    # 14.挪威人和住在蓝房子的人相邻； 
        if p.index('挪威人')-h.index('蓝色房子') not in [-1,1]:
            continue

        for d in drink_list:
        # 3.丹麦人喝茶；
            if p.index('丹麦人')!=d.index('茶'):
                continue
        # 5.绿房子的主人喝咖啡；
            if h.index('绿色房子')!=d.index('咖啡'):
                continue
      
            for s in smoke_list:
            # 7.黄色房子里的人抽DUNHILL牌香烟；
                if h.index('黄色房子')!=s.index('DUNHILL'):
                    continue
            # 12.抽BLUEMASTER牌香烟的人喝啤酒；
                if s.index('BLUEMASTER')!=d.index('啤酒'):
                    continue
            # 13.德国人抽PRINCE牌香烟；
                if p.index('德国人')!=s.index('PRINCE'):
                    continue
            # 15.抽BLENDS牌香烟的人和喝矿泉水的人相邻
                if s.index('BLENDS')-d.index('矿泉水') not in [-1,1]:
                    continue

                for p1 in pet_list:
                # 2.瑞典人养狗作为宠物；
                    if p.index('瑞典人')!=p1.index('狗'):
                        continue
                # 6.抽PALLMALL牌香烟的人养鸟； 
                    if s.index('PALLMALL')!=p1.index('鸟'):
                        continue
                # 10.抽BLENDS牌香烟的人和养猫的人相邻； 
                    if s.index('BLENDS')-p1.index('猫') not in [-1,1]:
                        continue
                # 11.养马的人和抽DUNHILL牌香烟的人相邻；  
                    if s.index('DUNHILL')-p1.index('马') not in [-1,1]:
                        continue

                    print(p)
                    print(h)
                    print(d)
                    print(s)
                    print(p1)
                    print('养鱼的人是'+p[p1.index('鱼')])
                    sys.exit()
